﻿namespace zijian666.WorkScheduler.Abstractions;

/// <summary>
/// 表示一个令牌桶。
/// </summary>
public interface ITokenBucket
{
    /// <summary>
    /// 获取一个令牌。
    /// </summary>
    IToken? TryGet();

    /// <summary>
    /// 空闲令牌槽数量。
    /// </summary>
    int Free { get; }

    /// <summary>
    /// 使用中的令牌槽数量。
    /// </summary>
    int Used { get; }

    /// <summary>
    /// 令牌桶容量。
    /// </summary>
    int Capacity { get; }
}